package booroo.basic;

public class J11_SungJuk_v4 {

	public static void main(String[] args) {
		// 객체지향 기법을 이용해서 성적처리 프로그램 작성
		J11SungJuk sj = new J11SungJuk();
		/*sj.name = "지현";
		sj.kor = 98;
		sj.eng = 45;
		sj.mat = 78;*/
		// 초기화가 불편 - 생성자를 이용할 것!
		sj = new J11SungJuk("수지", 45, 23, 98);
		System.out.println(sj.name);
		System.out.println(sj.kor);
		System.out.println(sj.eng);
		System.out.println(sj.mat);
		
		System.out.println(sj.getTotal());
		System.out.println(sj.getAverage());
		System.out.println(sj.getGrade());

	} // main

} // class

// 성적 데이터 : 이름,국어,영어,수학,총점,평균,학점
// 성적 메서드 : 총점구하기, 평균구하기, 학점구하기, 결과출력하기
class J11SungJuk {
	String name;
	int kor, eng, mat, tot;
	double avg;
	char grd;
	
	public J11SungJuk() {} // 기본 생성자
	public J11SungJuk(String name, int kor, int eng, int mat) {
		this.name = name;
		this.kor = kor;
		this.eng = eng;
		this.mat = mat;
		// this 접두사는 클래스의 멤버변수를 가리킴
		// 만일, 기본생성자 없이 사용자 정의 생성자만 만든다면?
	} // 사용자 정의 생성자	
	
	// 메서드 정의
	int getTotal(){
		tot = kor + eng + mat;
		return tot;
	}
	double getAverage(){
		// int imsi = getTotal();
		// avg = imsi / 3;
		avg = getTotal() / 3;
		return avg;
	}
	char getGrade(){
		switch((int)getAverage() / 10){
			case 10: case 9: grd = '수'; break;
			case 8: grd = '우'; break;
			case 7: grd = '미'; break;
			case 6: grd = '양'; break;
			case 5: case 4: case 3: case 2: case 1:
			case 0: grd = '가'; 
			}
		return grd;
	} // 메서드의 반환값 유형을 결과값의 종류에 따라 지정
}
	/*void getTotal(){
		tot = kor + eng + mat;
	}
	void getAverage(){
		avg = (kor + eng + mat) / 3;
	}
	void getGrade(){
		switch((int)((kor + eng + mat) / 3) / 10){
			case 10: case 9: grd = '수';
			case 8: grd = '우';
			case 7: grd = '미';
			case 6: grd = '양';
			case 5: grd = '가';
			case 4: grd = '가';
			case 3: grd = '가';
			case 2: grd = '가';
			case 1: grd = '가';
			case 0: grd = '가';
		}
	}
*/ // 메서드의 반환값 유형을 무조건 void로 지정

